Pular para o conteúdo principal

Sobre multipath

Em storages corporativos (IBM, HPE, Dell, Lenovo/Pure, etc.) o termo multipath aparece o tempo todo. O conceito é simples: múltiplos caminhos entre o host e a mesma LUN, garantindo

  • Alta disponibilidade – se HBA, cabo, switch ou controladora falhar, o I/O migra sem interrupção;
  • Balanceamento de carga – tráfego distribuído entre links (quando a política do array permite);
  • Manutenção sem downtime – podemos isolar um caminho para upgrade sem parar serviços.

Pacotes necessários

sudo apt update
sudo apt install multipath-tools scsitools
sudo systemctl enable --now multipathd

Visualizando caminhos

root@host:~# multipath -ll
mpatha (36d039ea0001cf998000002535ffbd0d6) dm‑1 LENOVO,DE_Series
size=80G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 16:0:0:1 sdc 8:32 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
`- 17:0:0:1 sdd 8:48 active ready running

Com o multipath é possível definir se o tráfego será ativo‑ativo, ativo‑standby, round‑robin, etc. Para a linha Lenovo DE‑Series não há tunáveis oficiais para Ubuntu, portanto utilizamos o snippet padrão incluído em /usr/share/multipath/conf.d/50‑lenovo.conf (abaixo apenas para referência):

device {
vendor "LENOVO"
product "DE_Series"
product_blacklist "Universal Xport"
path_grouping_policy "group_by_prio"
path_checker "rdac"
features "2 pg_init_retries 50"
hardware_handler "1 rdac"
prio "rdac"
failback "immediate"
no_path_retry 30
}

Aliases amigáveis

Por padrão o WWID gigantesco aparece como nome do mapa (/dev/mapper/36d0…). Podemos criar um alias – recomenda‑se usar o mesmo nome do volume na storage para evitar confusão e ações incorretas durante a manutenção. exemplo de conf:

# /etc/multipath.conf

defaults {
user_friendly_names yes
}

multipaths {
multipath {
wwid 36d039ea0001cf998000002535ffbd0d6
alias volume_Edu_Teste
}
multipath {
wwid 36d039ea0001cf998000002535ffbd0d7
alias Banco_de_dados
}
multipath {
wwid 36d039ea0001cf998000002535ffbd0d8
alias Backup
}
}

Recarregue o daemon e confirme:

sudo multipathd -k reconfigure
sudo multipath -ll

Resize de LUN

  1. Após Expandir o LUN na storage

  2. Forçar rescan dos caminhos SCSI

    for d in /sys/class/scsi_device/*/device/rescan; do
    echo 1 | sudo tee "$d"
    done
  3. Atualizar o mapa multipath

    sudo multipathd -k 'resize map <alias-ou-wwid>'
  4. Confirmar novo tamanho

    sudo multipath -ll <alias>
  5. Expandir o sistema de arquivos

    # XFS
    sudo xfs_growfs /ponto/de/montagem

    # ou EXT4
    sudo resize2fs /dev/mapper/<alias>

    # ou LVM
    lvextend -l+100%FREE -n <LV> <VG> -r

Refresh / adição de caminhos

  1. Detectar novos targets ou mudanças de zoning

    sudo rescan-scsi-bus -r
  2. Recarregar regras do multipath

    sudo multipathd -k reconfigure

Esses dois passos são suficientes para que o host veja caminhos recém‑liberados sem reboot.

Remoção de LUN no ambiente linux

  1. Desmontar FS / desativar VG que usa o LUN

    umount /ponto/de/montagem 

    ou

    vgchange -an <VG_name>
  2. Esvaziar buffers de I/O (flush)

    sudo blockdev --flushbufs /dev/mapper/<alias>
  3. Remover o mapa multipath

    sudo multipath -f <alias>
  4. Apagar os dispositivos SCSI individuais

    for sd in $(lsscsi | grep <alias> | awk '{print $NF}'); do
    echo 1 | sudo tee /sys/block/${sd##*/}/device/delete
    done
  5. Desmapear a LUN na storage

Importante: se o LUN fizer parte de LVM, use vgreduce / pvremove antes do passo 3.